﻿#pragma once
#include "../../../Common/D3DUtil.h"
#include "../../../Common/d3dx12.h"
#include "../../../Common/GeometryGenerator.h"
#include "../FrameResource.h"

#include <memory>
#include <unordered_map>

#include "../../../Common/GeoMemetryManager.h"

struct Texture;

class Dx2GeometryManager : public GeoMemetryManager
{
public:
    virtual  void BuildGeometry(ID3D12Device* device,ID3D12GraphicsCommandList* cmdList) override;
    
    void BuildWavesGeometry(
    ID3D12Device* device,
    ID3D12GraphicsCommandList* cmdList,
    UINT waveRowCount,UINT waveColCount,UINT waveVertexCount);
    
private:
    void BuildLandGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);
    
    void BuildBoxGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);
	
    void BuildRoomGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);

    void BuildSkullGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);

    void BuildTreeSpritesGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);

    void BuildQuadPatchGeometry(
        ID3D12Device* device,
        ID3D12GraphicsCommandList* cmdList);

};
